package thinkingInJava.ClassInfo;

// http://zhidao.baidu.com/link?url=NR6QF9g8uoX4OZbyoYIrlj9JZczZmtYAZGoyaqNzt6bcQBF57qc-X3OZV-uGAyA7UEi5IzYvOG5Hm7YjE4gHiK
// instanceof 什么时候用?
// 我个人理解的一个应用场合就是，当你拿到一个对象的引用时（例如参数），你可能需要判断这个引用真正指向的类。
// 所以你需要从该类继承树的最底层开始，使用instanceof操作符判断，第一个结果为true的类即为引用真正指向的类。
class Person{}
class Student extends Person{}
class Postgraduate extends Student{}
class Animal{} 
public class InstanceofTester {
 public static void main(String[] args) {
  instanceofTest(new Student());
 }
 public static void instanceofTest(Person p){
  // 判断p的真正类型
  if (p instanceof Postgraduate){
   System.out.println("p是类Postgraduate的实例");
  } else if(p instanceof Student){
   System.out.println("p是类Student的实例");
  } else if(p instanceof Person){
   System.out.println("p是类Person的实例");
  } else if(p instanceof Object) {
   System.out.println("p是类Object的实例");
  }
  /*if(p instanceof Animal){//此错编译错误，所以做注释
   System.out.println("p是类Animal的实例");
  }*/
 }
}
